package com.example.research.mapper;

import com.example.research.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户数据访问层
 */
@Mapper
public interface UserMapper {

    /**
     * 根据ID查询用户
     */
    User selectById(@Param("id") Long id);

    /**
     * 根据用户名查询用户
     */
    User selectByUsername(@Param("username") String username);

    /**
     * 查询所有用户
     */
    List<User> selectAll();

    /**
     * 根据角色查询用户
     */
    List<User> selectByRole(@Param("roleName") String roleName);

    /**
     * 插入用户
     */
    int insert(User user);

    /**
     * 更新用户
     */
    int update(User user);

    /**
     * 删除用户
     */
    int deleteById(@Param("id") Long id);

    /**
     * 检查用户名是否存在
     */
    int countByUsername(@Param("username") String username);

    /**
     * 检查邮箱是否存在
     */
    int countByEmail(@Param("email") String email);

    /**
     * 根据教师ID查询学生列表
     */
    List<User> findStudentsByTeacher(@Param("teacherId") Long teacherId);

    /**
     * 根据角色查询用户（兼容方法）
     */
    List<User> findByRole(@Param("roleName") String roleName);

    /**
     * 根据ID查询用户（兼容方法）
     */
    User findById(@Param("id") Long id);
}
